﻿// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;

// public class UIInputEx : UIInput
// {
//     public bool enableCheckSensitive = true;
//     bool _sensitive;
//     public bool sensitive
//     {
//         get{ return inputType != InputType.Password && _sensitive; }
//     }

//     public override void UpdateLabel ()
//     {
//         if (label != null)
//         {
//             if (mDoInit) Init();
//             bool selected = isSelected;
//             string fullText = value;
//             bool isEmpty = string.IsNullOrEmpty(fullText) && string.IsNullOrEmpty(Input.compositionString);
//             label.color = (isEmpty && !selected) ? mDefaultColor : activeTextColor;
//             string processed = null;

//             if (isEmpty)
//             {
//                 processed = selected ? "" : mDefaultText;
//                 label.alignment = mAlignment;
//             }
//             else
//             {
//                 if (inputType == InputType.Password)
//                 {
//                     processed = "";

//                     string asterisk = "*";

//                     if (label.bitmapFont != null && label.bitmapFont.bmFont != null &&
//                         label.bitmapFont.bmFont.GetGlyph('*') == null) asterisk = "x";

//                     for (int i = 0, imax = fullText.Length; i < imax; ++i) processed += asterisk;
//                 }
//                 else
//                 {
//                     string newStr = null;
//                     if (enableCheckSensitive)
//                     {
//                         if (SensitiveWordManager.Convert(fullText, ref newStr))
//                         {
//                             processed = newStr;
//                             _sensitive = true;
//                         }
//                         else
//                         {
//                             processed = fullText;
//                             _sensitive = false;
//                         }
//                     }
//                     else
//                     {
//                         processed = fullText;
//                         _sensitive = false;
//                     }
//                 }


//                 // Start with text leading up to the selection
//                 int selPos = selected ? Mathf.Min(processed.Length, cursorPosition) : 0;
//                 string left = processed.Substring(0, selPos);

//                 // Append the composition string and the cursor character
//                 if (selected) left += Input.compositionString;

//                 // Append the text from the selection onwards
//                 processed = left + processed.Substring(selPos, processed.Length - selPos);

//                 // Clamped content needs to be adjusted further
//                 if (selected && label.overflowMethod == UILabel.Overflow.ClampContent && label.maxLineCount == 1)
//                 {
//                     // Determine what will actually fit into the given line
//                     int offset = label.CalculateOffsetToFit(processed);

//                     if (offset == 0)
//                     {
//                         mDrawStart = 0;
//                         label.alignment = mAlignment;
//                     }
//                     else if (selPos < mDrawStart)
//                     {
//                         mDrawStart = selPos;
//                         label.alignment = NGUIText.Alignment.Left;
//                     }
//                     else if (offset < mDrawStart)
//                     {
//                         mDrawStart = offset;
//                         label.alignment = NGUIText.Alignment.Left;
//                     }
//                     else
//                     {
//                         offset = label.CalculateOffsetToFit(processed.Substring(0, selPos));

//                         if (offset > mDrawStart)
//                         {
//                             mDrawStart = offset;
//                             label.alignment = NGUIText.Alignment.Right;
//                         }
//                     }

//                     // If necessary, trim the front
//                     if (mDrawStart != 0)
//                         processed = processed.Substring(mDrawStart, processed.Length - mDrawStart);
//                 }
//                 else
//                 {
//                     mDrawStart = 0;
//                     label.alignment = mAlignment;
//                 }
//             }

//             label.text = processed;
//             #if MOBILE
//             if (selected && (mKeyboard == null || inputShouldBeHidden))
//             #else
//             if (selected)
//             #endif
//             {
//                 int start = mSelectionStart - mDrawStart;
//                 int end = mSelectionEnd - mDrawStart;

//                 // Blank texture used by selection and caret
//                 if (mBlankTex == null)
//                 {
//                     mBlankTex = new Texture2D(2, 2, TextureFormat.ARGB32, false);
//                     for (int y = 0; y < 2; ++y)
//                         for (int x = 0; x < 2; ++x)
//                             mBlankTex.SetPixel(x, y, Color.white);
//                     mBlankTex.Apply();
//                 }

//                 // Create the selection highlight
//                 if (start != end)
//                 {
//                     if (mHighlight == null)
//                     {
//                         mHighlight = NGUITools.AddWidget<UITexture>(label.cachedGameObject);
//                         mHighlight.name = "Input Highlight";
//                         mHighlight.mainTexture = mBlankTex;
//                         mHighlight.fillGeometry = false;
//                         mHighlight.pivot = label.pivot;
//                         mHighlight.SetAnchor(label.cachedTransform);
//                     }
//                     else
//                     {
//                         mHighlight.pivot = label.pivot;
//                         mHighlight.mainTexture = mBlankTex;
//                         mHighlight.MarkAsChanged();
//                         mHighlight.enabled = true;
//                     }
//                 }

//                 // Create the carter
//                 if (mCaret == null)
//                 {
//                     mCaret = NGUITools.AddWidget<UITexture>(label.cachedGameObject);
//                     mCaret.name = "Input Caret";
//                     mCaret.mainTexture = mBlankTex;
//                     mCaret.fillGeometry = false;
//                     mCaret.pivot = label.pivot;
//                     mCaret.SetAnchor(label.cachedTransform);
//                 }
//                 else
//                 {
//                     mCaret.pivot = label.pivot;
//                     mCaret.mainTexture = mBlankTex;
//                     mCaret.MarkAsChanged();
//                     mCaret.enabled = true;
//                 }

//                 if (start != end)
//                 {
//                     label.PrintOverlay(start, end, mCaret.geometry, mHighlight.geometry, caretColor, selectionColor);
//                     mHighlight.enabled = mHighlight.geometry.hasVertices;
//                 }
//                 else
//                 {
//                     label.PrintOverlay(start, end, mCaret.geometry, null, caretColor, selectionColor);
//                     if (mHighlight != null) mHighlight.enabled = false;
//                 }

//                 // Reset the blinking time
//                 mNextBlink = RealTime.time + 0.5f;
//                 mLastAlpha = label.finalAlpha;
//             }
//             else Cleanup();
//         }
//     }
// }
